﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using l1cs.server;

namespace l1cs.server.model.map
{
    /**
     * マップを読み込む為の抽象クラス.
     */
    abstract class MapReader
    {
        /**
         * 全てのテキストマップを読み込む(抽象クラス).
         *
         * @return Map
         * @throws IOException
         */
        public abstract Dictionary<int, L1Map> read();

        /**
         * 指定のマップ番号のテキストマップを読み込む.
         *
         * @param id
         *            マップID
         * @return L1Map
         * @throws IOException
         */
        public abstract L1Map read( int id );

        /// <summary>
        /// 読み込むマップファイルを判断する（テキストマップ or キャッシュマップ or V2テキストマップ).
        /// </summary>
        /// <returns><see cref="MapReader">MapReader</see>オブジェクト</returns>
        public static MapReader getDefaultReader()
        {
            //if (Config.LOAD_V2_MAP_FILES) {
            //    return new V2MapReader();
            //}
            if ( Config.CACHE_MAP_FILES )
            {
                return new CachedMapReader();
            }
            return new TextMapReader();
        }
    }
}
